//入口文件,初始化一个基本的项目服务器
//导入express
const express = require('express')
    //创建express服务器实例
const app = express();
//引入body-parser
const bodyParser = require('body-parser')
    //导入定义验证规则的包
    //导入解析token中间件
const expressJwt = require('express-jwt')
const joi = require('joi')
    //解决跨域问题用cors
    //导入并配置cors中间件
    //导入
const cors = require('cors')
    //将cors注册为全局中间件
app.use(cors());

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
    //
    //配置解析表单数据的中间件 注意：只能解析application/x-www-form-urlencoded格式的表单数据
    // app.use(express.urlencoded({ extended: false }))


//优化res.send()函数
app.use((req, res, next) => {
        res.ResData = function(err, status = 1, data = {}) {
            res.send({
                data: data,
                meta: {
                    status,
                    //三元表达式
                    msg: err instanceof Error ? err.message : err
                }
            })
        }
        next()
    })
    //身份认证 以/api开始请求的接口不需要token认证
app.use(expressJwt({ secret: 'secret ' }).unless({ path: [/^\/api\//] }))
    //定义错误中间件
app.use((err, req, res, next) => {
        //获取捕获信息
        if (err.name === 'UnauthorizedError') {
            return res.ResData("身份认证失败")
        }
    })
    //导入并注册用户路由模块
const userRouter = require('./router/user')
app.use('/api', userRouter)
const menuRouter = require('./router/menu')
app.use('/api', menuRouter)
const usersRouter = require('./router/users')
app.use('/api', usersRouter)
const rightsRouter = require('./router/rights')
app.use('/api', rightsRouter)



//调用listen方法,开启指定端口的一个web服务器
app.listen(8886, () => {
    console.log("服务器已开启");
})